//
//  SensorsAnalyticsRecommend.h
//  SensorsAnalyticsSDK
//
//  Created by Linfeng Song on 2020/9/22.
//  Copyright © 2020 SensorsData. All rights reserved.
//

#import <Foundation/Foundation.h>

//****************************************************************************
//用户的行为类型
//****************************************************************************
FOUNDATION_EXPORT NSString * const SA_bhv_type_exposure; //曝光
FOUNDATION_EXPORT NSString * const SA_bhv_type_click; //点击
FOUNDATION_EXPORT NSString * const SA_bhv_type_read; // 阅读
FOUNDATION_EXPORT NSString * const SA_bhv_type_rate; // 打分
FOUNDATION_EXPORT NSString * const SA_bhv_type_comment; //评论
FOUNDATION_EXPORT NSString * const SA_bhv_type_tip; //打赏
FOUNDATION_EXPORT NSString * const SA_bhv_type_share; //分享
FOUNDATION_EXPORT NSString * const SA_bhv_type_collect;//收藏
FOUNDATION_EXPORT NSString * const SA_bhv_type_subscribe;//关注
FOUNDATION_EXPORT NSString * const SA_bhv_type_like;//点赞
FOUNDATION_EXPORT NSString * const SA_bhv_type_unlike;//点踩
FOUNDATION_EXPORT NSString * const SA_bhv_type_unsubscribe;//取消关注
FOUNDATION_EXPORT NSString * const SA_bhv_type_uncollect;//取消收藏
FOUNDATION_EXPORT NSString * const SA_bhv_type_dislike;//其它负反馈事件。用户通过某个操作表示明确的不喜欢该物品


//****************************************************************************
//用户的数据类型类型
//****************************************************************************
FOUNDATION_EXPORT NSString * const SA_item_type_comic; //漫画
FOUNDATION_EXPORT NSString * const SA_item_type_chapter; //章节


//****************************************************************************
//附加数据字段类型
//****************************************************************************
FOUNDATION_EXPORT NSString * const SensorsAnalyticsReportModuleId; //模块ID
FOUNDATION_EXPORT NSString * const SensorsAnalyticsReportPageId; //页面ID
FOUNDATION_EXPORT NSString * const SensorsAnalyticsReportPosition; //内容所在的位置信息


@interface SensorsAnalyticsRecommend : NSObject

+ (SensorsAnalyticsRecommend *)sharedInstance;


/// 用户的唯一标识
/// @param uniqueUserId 用户标识，一般为用户的身份id
+ (void)configUniqueUserId:(NSString *)uniqueUserId;


/// 配置设备ID
/// @param uniqueDeviceId 默认sdk设置，如果有特别需求，可自行配置
+ (void)configUniqueDeviceId:(NSString *)uniqueDeviceId;

/// 登录状态
/// @param login　0：未登录1：登录
+ (void)configLogin:(NSString *)login;


/// 配置应用版本号
/// @param appVersion 当前app的版本号
+ (void)configAppVersion:(NSString *)appVersion;


/// 是否开启debug模式
/// @param enable 默认为NO
+ (void)enableDebug:(BOOL)enable;


/// 配置平台类型
/// @param platform 默认为ios
+ (void)configPlatform:(NSString *)platform;


/// 配置设置型号
/// @param device_model 默认为当前设备型号
+ (void)configDeviceModel:(NSString *)device_model;


/// 获取推荐数据结构处理
/// @param bhv_type 数据行为（见bhv_type_xxxx）
/// @param scene_id 推荐场景ID
/// @param trace_id 推荐引擎id
/// @param trace_info 推荐引擎信息
/// @param item_id 内容id
/// @param item_type 内容类型（见item_type_xxxx）默认为item_type_comic
/// @param bhv_value 阅读时长
/// @param bhv_criterion 阅读数量bhv_type为read&item为comic或chapter 填写章节数
/// @param properties 附加数据exp:@{SensorsAnalyticsReportModuleId:@"xxx",SensorsAnalyticsReportPageId:@"xxx" }
+(NSDictionary *)bodyWith:(NSString *)bhv_type
                  sceneId:(NSString *)scene_id
                  traceId:(NSString *)trace_id
                traceInfo:(id)trace_info
                   itemId:(NSString *)item_id
                 itemType:(NSString *)item_type
                 bhvValue:(double)bhv_value
             bhvCriterion:(NSInteger)bhv_criterion
               properties:(NSDictionary *)properties;

/// 获取推荐数据结构处理
/// @param bhv_type 数据行为（见bhv_type_xxxx）
/// @param scene_id 推荐场景ID
/// @param trace_id 推荐引擎id
/// @param trace_info 推荐引擎信息
/// @param item_id 内容id
/// @param item_type 内容类型（见item_type_xxxx）默认为item_type_comic
+(NSDictionary *)bodyWith:(NSString *)bhv_type
                  sceneId:(NSString *)scene_id
                  traceId:(NSString *)trace_id
                traceInfo:(id)trace_info
                   itemId:(NSString *)item_id
                 itemType:(NSString *)item_type;



/// 数据上报API，此api是上报忽略场景ID与引擎id等信息
/// @param bhv_type 数据行为（见bhv_type_xxxx）
/// @param item_id 内容id
/// @param item_type 内容类型（见item_type_xxxx）,默认为item_type_comic
+ (void)report:(NSString *)bhv_type
        itemId:(NSString *)item_id
      itemType:(NSString *)item_type;


/// 数据上报API
/// @param bhv_type 数据行为（见bhv_type_xxxx）
/// @param scene_id 推荐场景id
/// @param trace_id 推荐引擎id
/// @param trace_info 推荐引擎信息
/// @param item_id 内容id
/// @param item_type 内容类型（见item_type_xxxx）默认为item_type_comic
+ (void)report:(NSString *)bhv_type
       sceneId:(NSString *)scene_id
       traceId:(NSString *)trace_id
     traceInfo:(id)trace_info
        itemId:(NSString *)item_id
      itemType:(NSString *)item_type;


/// 数据上报API
/// @param bhv_type 数据行为（见bhv_type_xxxx）
/// @param scene_id 推荐场景ID
/// @param trace_id 推荐引擎id
/// @param trace_info 推荐引擎信息
/// @param item_id 内容id
/// @param item_type 内容类型（见item_type_xxxx）默认为item_type_comic
/// @param bhv_value 阅读时长
/// @param bhv_criterion 阅读数量bhv_type为read&item为comic或chapter 填写章节数
/// @param properties 附加数据exp:@{SensorsAnalyticsReportModuleId:@"xxx",SensorsAnalyticsReportPageId:@"xxx" }
+ (void)report:(NSString *)bhv_type
       sceneId:(NSString *)scene_id
       traceId:(NSString *)trace_id
     traceInfo:(id)trace_info
        itemId:(NSString *)item_id
      itemType:(NSString *)item_type
      bhvValue:(double)bhv_value
  bhvCriterion:(NSInteger)bhv_criterion
    properties:(NSDictionary *)properties;



/// 数据曝光上报API
/// @param scene_id 推荐场景ID
/// @param trace_id 推荐引擎id
/// @param trace_info 推荐引擎信息
/// @param item_type 内容类型（见item_type_xxxx）默认为item_type_comic
/// @param item_ids 内容id数组
+ (void)reportExposure:(NSString *)scene_id
               traceId:(NSString *)trace_id
             traceInfo:(id)trace_info
              itemType:(NSString *)item_type
               itemIds:(NSArray *)item_ids;


/// 数据曝光上报API
/// @param scene_id 推荐场景ID
/// @param trace_id 推荐引擎id
/// @param trace_info 推荐引擎信息
/// @param item_type 内容类型（见item_type_xxxx）默认为item_type_comic
/// @param item_ids 内容id数组
/// @param properties  附加数据exp:@{SensorsAnalyticsReportModuleId:@"xxx",SensorsAnalyticsReportPageId:@"xxx" }
+ (void)reportExposure:(NSString *)scene_id
               traceId:(NSString *)trace_id
             traceInfo:(id)trace_info
              itemType:(NSString *)item_type
               itemIds:(NSArray *)item_ids
            properties:(NSDictionary *)properties;



@end

